#region head comment
/*
Code generate by YhdSdkTool.
email:starpeng@vip.qq.com
2013-01-21 23:00:57:150 +08:00
*/
#endregion

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using YhdSdk.Domain;
using YhdSdk.Domain.Order;
using YhdSdk.Response.Order;

namespace YhdSdk.Request.Order
{
    /// <summary>
    /// 获取订单列表（时间和订单状态）
    ///<para></para>
    ///<para>根据订单状态和日期类型，时间来查询订单列表信息</para>
    ///<para>查询成功，返回总订单数，和相应的订单列表，查询失败，则返回相应的错误信息描述</para>
    /// </summary>
    public class YhdOrdersGetRequest : IYhdRequest<YhdOrdersGetResponse>
    {
        /// <summary>
        /// 订单状态（逗号分隔）:
        ///<para>ORDER_WAIT_PAY：已下单（货款未全收）</para>
        ///<para>ORDER_PAYED：已下单（货款已收）</para>
        ///<para>ORDER_WAIT_SEND：可以发货（已送仓库）</para>
        ///<para>ORDER_ON_SENDING：已出库（货在途）,已发送物流</para>
        ///<para>ORDER_RECEIVED：货物用户已收到</para>
        ///<para>ORDER_FINISH：订单完成</para>
        ///<para>ORDER_GRT：退换货（用户要求退货,用户要求换货,退货完成,换货完成）</para>
        ///<para>ORDER_CANCEL：订单取消</para>
        /// </summary>
        [XmlArray("orderStatusList")]
        [XmlArrayItem("string")]
        public List<String> OrderStatusList
        {
            get;
            set;
        }

        /// <summary>
        /// 日期类型(1：订单生成日期，2：订单付款日期，3：订单发货日期，4：订单收货日期，5：订单更新日期)
        /// </summary>
        /// <example>1</example>
        [XmlElement("dateType")]
        public Nullable<Int32> DateType
        {
            get;
            set;
        }

        /// <summary>
        /// 查询开始时间
        /// </summary>
        /// <example>2011-12-12 20:10:10</example>
        [XmlElement("startTime")]
        public String StartTime
        {
            get;
            set;
        }

        /// <summary>
        /// 查询结束时间(时间差为15天)
        /// </summary>
        /// <example>2011-12-12 20:10:10</example>
        [XmlElement("endTime")]
        public String EndTime
        {
            get;
            set;
        }

        /// <summary>
        /// 当前页数
        /// </summary>
        /// <example>1</example>
        [XmlElement("curPage")]
        public Nullable<Int32> CurPage
        {
            get;
            set;
        }

        /// <summary>
        /// 每页显示记录数，默认50，最大100
        /// </summary>
        /// <example>50</example>
        [XmlElement("pageRows")]
        public Nullable<Int32> PageRows
        {
            get;
            set;
        }

        /// <summary>
        /// Api接口名称
        /// </summary>
        public String ApiName
        {
            get{ return "yhd.orders.get"; }
        }

        /// <summary>
        /// 获取参数列表
        /// </summary>
        public IDictionary<string, string> GetParameters()
        {
            YhdDictionary parameters = new YhdDictionary();
            parameters.Add("orderStatusList" ,this.OrderStatusList);
            parameters.Add("dateType" ,this.DateType);
            parameters.Add("startTime" ,this.StartTime);
            parameters.Add("endTime" ,this.EndTime);
            parameters.Add("curPage" ,this.CurPage);
            parameters.Add("pageRows" ,this.PageRows);
            return parameters;
        }

        /// <summary>
        /// 验证参数
        /// </summary>
        public void Validate()
        {
            RequestValidator.ValidateRequired("orderStatusList", this.OrderStatusList);
            RequestValidator.ValidateRequired("startTime", this.StartTime);
            RequestValidator.ValidateRequired("endTime", this.EndTime);
        }

    }
}
